export default {
  data() {
    return {
      dialogs: [],
      // 弹框列表
      dialogMap: {},
    };
  },
  mounted() {
    this.dialogInit();
  },
  methods: {
    /**
     * 弹窗初始化
     */
    dialogInit() {
      this.dialogs.forEach((name) => {
        this.$formDialogAdd(this.$refs[name], name);
      });
    },
    /**
     * 新增一个弹框对象
     * @param {Dialog refs} dialog
     * @param {Dialog Name} name
     */
    $formDialogAdd(dialog, name) {
      if (!name || !dialog) return;
      this.dialogMap[name] = {};
      this.$set(this.dialogMap, name, { show: false, info: {}, dialog });
    },
    /**
     * 通过name找到存的对象
     * @param {Dialog Name} name
     */
    $formDialogGet(name) {
      return this.dialogMap[name] || {};
    },
    /**
     * 通过name获取其数据
     * @param {Dialog Name} name
     */
    $formDialogData(name, data) {
      if (data) {
        this.$set(this.dialogMap[name], 'data', data);
      } else {
        return this.dialogMap[name].data || {};
      }
    },
    /**
     * 通过name开关弹窗
     * @param {Dialog name} name
     */
    $formDialogShow(name, show = false) {
      if (typeof show !== 'undefined' && this.dialogMap[name]) {
        this.$set(this.dialogMap[name], 'show', !!show);
        console.log(this.dialogMap[name]);
      } else {
        return this.dialogMap[name].show;
      }
    },
    /**
     * 通过name删除存的对象
     * @param {Dialog Name} name
     */
    $formDialogRemove(name) {
      if (this.dialogMap[name]) delete this.dialogMap[name];
    },
    /**
     * 自作多情的一个title解决方案
     * @param {Dialog} name
     */
    $formDialogTitle(name, title = '') {
      return this.dialogMap[name] && this.dialogMap[name].data
        ? this.dialogMap[name].data.id
          ? `修改${title}`
          : `新增${title}`
        : '';
    },
  },
};
